'''
TYPE :
    string
    integer
    char
    float
    symbol
    list
    dict
    lambda
'''

class Value:
    def __init__(self,v):
        self.type="Value"
        self.value = v
    def __str__(self):
        return "<"+self.type+" "+str(self.value)+">"

class Integer(Value):
    def __init__(self,v):
        Value.__init__(self,v)
        self.type="Integer"

class String(Value):
    def __init__(self,v):
        Value.__init__(self,v)
        self.type="String"
class Char(Value):
    def __init__(self,v):
        Value.__init__(self,v)
        self.type="Char"
class Float(Value):
    def __init__(self,v):
        Value.__init__(self,v)
        self.type="Float"
class Symbol(Value):
    def __init__(self,v):
        Value.__init__(self,v)
        self.type="Symbol"
class Keyword(Value):
    def __init__(self,v):
        self.type="Keyword"
        Value.__init__(self,v)
class List(Value):
    def __init__(self,v):
        Value.__init__(self,v)
        self.type="List"
class Dict(Value):
    def __init__(self,v):
        Value.__init__(self,v)
        self.type="Dict"
class Lambda(Value):
    def __init__(self,v,args=[]):
        self.args = args
        Value.__init__(self,v)
        self.type="Lambda"
class Func(Value):
    def __init__(self,v):
        Value.__init__(self,v)
        self.type="Func"
class Bool(Value):
    def __init__(self,v):
        Value.__init__(self,v)
        self.type="Bool"
class Nil(Value):
    def __init__(self):
        Value.__init__(self,None)
        self.type="Nil"